package cn.virens.common.service.spring;

import cn.virens.common.entity.BaseModel;
import cn.virens.common.exception.APIException;

import java.io.Serializable;

/**
 * 通用的service接口
 *
 * @param <T> 实体类型
 * @author virens
 */
public interface BaseWriteService<T extends BaseModel> extends BaseReadService<T> {
    /**
     * 删除数据
     *
     * @param id ID
     * @return 失败返回null
     * @throws APIException 一般异常
     */
    int delete(Serializable id) throws APIException;

    /**
     * 更新一条数据
     *
     * @param record 数据实体
     * @return 失败返回null
     * @throws APIException 一般异常
     */
    T update(T record) throws APIException;

    /**
     * 插入一条数据
     *
     * @param record 数据实体
     * @return 失败返回null
     * @throws APIException 一般异常
     */
    T insert(T record) throws APIException;
}
